Skip to main content
Version: current

bgp


routing/bgp

Conditions: !smips
Type: Directory

ArgumentTypeDescription
routing-table ( unset )enumName of the routing table, to install routes in. Overrides the instance parameter.
vrf ( unset )enumName of the VRF BGP connections operates on. By default uses the "main" routing table.
templates ( unset )multi_arg { enum }List of template names that will be used to inherit parameter values from. Useful feature, to easily configure groups with overlapping configuration options.
as ( unset )as_argA 32-bit BGP autonomous system number. The value accepts AS-Plain or AS-Dot formats. Override the instance ASN and configure BGP confederation using the following format: confederation_as/as. For example, if your AS is 34 and your confederation AS is 43, set as=43/34.
nexthop-choice ( unset )enum (default | force-self | propagate)Affect outgoing NEXT_HOP attribute selection. Next-hops set in filters always take precedence and are not changed on route reflection except when set in a filter.

  • default - select the next-hop as described in RFC 4271
  • force-self - use the local address of the interface that connects to the peer as the next-hop
  • propagate - propagate received next-hop; if the route has a BGP NEXT_HOP attribute, use it as the next-hop; otherwise, fall back to the default case
multihop ( unset )boolEnable when the remote peer is more than one hop away.

This option affects outgoing next-hop selection as described in RFC 4271 (for eBGP only, excluding iBGP peers local to the confederation). It also affects:

  • Whether to accept connections from peers not in the same network (the remote address of the connection is used for this check)
  • Whether to accept incoming routes with a NEXT_HOP attribute not in the same network as the address used to establish the connection
  • The target scope of routes installed from this peer; routes from multi-hop or iBGP peers resolve their next-hops through IGP routes by default
hold-time ( unset )alt { enum (infinity) { infinity:0 } , time [3 .. 65535] }Specifies the BGP Hold Time value to be used when negotiating with peers.
According to the BGP specification, if the router does not receive successive KEEPALIVE and/or UPDATE and/or NOTIFICATION messages within the period specified in the Hold Time field of the OPEN message, then the BGP connection to the peer will be closed.

The minimal hold-time value of both peers will be used (note that the special value 0 or 'infinity' is lower than any other value)

* infinity - never expire the connection and never send keepalive messages.
keepalive-time ( unset )timeThe interval between keepalive messages, if not set then by default keepalive is 1/3 of the hold-time.
afi ( unset )ubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6, evpn)List of address families this peer can exchange routing information. The remote peer must support BGP capabilities optional parameter (they usually do) to negotiate any other address families than IP.
cisco-vpls-nlri-len-fmt ( unset )enum (auto-bits | auto-bytes | bits | bytes)VPLS NLRI length format type. Used for compatibility with Cisco VPLS. [[Read more>>]].
output.remove-private-as ( unset )boolIf set, then the BGP AS-PATH attribute is removed before sending out route updates if the attribute contains only private AS numbers.

The removal process happens before routing filters are applied and before the local, AS number is prepended to the AS path.
output.as-override ( unset )boolIf set, then all instances of the remote peer's AS number in the BGP AS-PATH attribute are replaced with the local AS number before sending a route update to that peer. Happens before routing filters and prepend.
use-bfd ( unset )boolWhether to use the BFD protocol for faster connection state detection.
save-to ( unset )stringFilename to save BGP protocol-specific packet content (Exported PDU) into pcap format. This method allows much simpler peer-specific packet capturing for debugging purposes.
output.add-path ( unset )ubit (ip, ipv6)Enable sending of additional paths for specified address families (BGP Addpath).
output.affinity ( unset )enum (main | alone | remote-as | instance | afi | vrf | input)Configure output multicore processing. Read more in Routing Protocol Multi-core Support article.
  • alone - input and output of each session is processed in its own process, the most likely best option when there are a lot of cores and a lot of peers
  • afi, instance, vrf, remote-as - try to run input/output of new session in process with similar parameters
  • main - run input/output in the main process (could potentially increase performance on single-core even possibly on multicore devices with small amount of cores)
  • input - run output in the same process as input (can be set only for output affinity)
output.redistribute ( unset )ubit (connected, static, rip, ospf, isis, bgp, vpn, dhcp, fantasy, modem, bgp-mpls-vpn, slaac)Enable redistribution of specified route types.
output.filter-select ( unset )enumName of the routing select chain to be used for prefix selection. If not specified, then default selection is used.
output.filter-chain ( unset )enumName of the routing filter chain to be used on the output prefixes. If the chain is not specified, then BGP by default accepts everything.
output.network ( unset )enumName of the address list used to send local networks. The network is sent only if a matching IGP route exists in the routing table and its ORIGIN attribute is set to IGP, other distribution methods have ORIGIN attribute set to INCOMPLETE.
output.network-blackhole ( unset )bool
output.default-originate ( unset )enum (never | if-installed | always)Specifies default route (0.0.0.0/0) distribution method. 'if-installed' option can be used to distribute default route only if corresponding IGP route present in the routing table.
output.default-prepend ( unset )numHow many times to prepend local ASN.
output.no-client-to-client-reflection ( unset )boolDisable client-to-client route reflection in Route Reflector setups.
output.no-early-cut ( unset )boolThe early cut is the mechanism, to guess (based on default RFC behavior) what would happen with the sent NPLRI when received by the remote peer. If the algorithm determines that the NLRI is going to be dropped, a peer will not even try to send it. However such behavior may not be desired in specific scenarios, then this option should be used to disable the early cut feature. Early cut works with eBGP sessions.
output.keep-sent-attributes ( unset )boolStore in memory sent prefix attributes, required for dump-saved-advertisements command to work. By default, sent-out prefixes are not stored to preserve the router's memory. An option should be enabled only for debugging purposes when necessary to see currently advertised prefixes.
input.add-path ( unset )ubit (ip, ipv6)Accept received additional paths (BGP Addpath) for specified address families.
input.attr-error-handlingenum (default | revised)
input.affinity ( unset )enum (main | alone | remote-as | instance | afi | vrf)

Configure input multi-core processing. Read more in Routing Protocol Multi-core Support article.

  • alone - input and output of each session are processed in its own process, most likely the best option when there are a lot of cores and a lot of peers
  • afi, instance, vrf, remote-as - try to run input/output of new session in process with similar parameters
  • main - run input/output in the main process (could potentially increase performance on single-core even possibly on multi-core devices with a small amount of cores)
  • input - run output in the same process as input (can be set only for output affinity)

input.filter ( unset )enumName of the routing filter chain to be used on input prefixes. This happens after NLRIs are processed. If the chain is not specified, then BGP by default accepts everything.
input.filter-nlri ( unset )enumName of the filter chain that will filter incoming IPv4/IPv6 NLRIs directly before they are  stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session restart.
input.allow-as ( unset )numIndicates how many times to allow your own AS number in AS-PATH, before discarding a prefix.
input.accept-nlri ( unset )enumName of the ipv4/6 address-list. A quick way to filter incoming updates with specific NLRIs. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session restart.
input.filter-communities ( unset )enumA quick way to filter incoming updates with specific communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-ext-communities ( unset )enumA quick way to filter incoming updates with specific extended communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-large-communities ( unset )enumA quick way to filter incoming updates with specific large communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-communities ( unset )enumA quick way to filter incoming updates with specific communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-ext-communities ( unset )enumA quick way to filter incoming updates with specific extended communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-large-communities ( unset )enumA quick way to filter incoming updates with specific large communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-unknown ( unset )enumA quick way to filter incoming updates with specific "unknown" attributes. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.limit-process-routes-ipv4 ( unset )enum (10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000)Try to limit the amount of received IPv4 routes to the specified number. This number does not represent the exact number of routes going to be installed in the routing table by the peer. BGP session "clear" command must be used to reset the flag if the limit is reached.
input.limit-process-routes-ipv6 ( unset )enum (10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000)Try to limit the amount of received IPv6 routes to the specified number. This number does not represent the exact number of routes going to be installed in the routing table by the peer. BGP session "clear" command must be used to reset the flag if the limit is reached.

routing/bgp/template

Conditions: !smips
Type: Directory

FlagNameDescription
*defaultdefault
Xdisableddisabled
Iinactiveinactive
ArgumentTypeDescription
name ( mandatory )string
routing-table ( unset )enumName of the routing table, to install routes in. Overrides the instance parameter.
vrf ( unset )enumName of the VRF BGP connections operates on. By default uses the "main" routing table.
templates ( unset )multi_arg { enum }List of template names that will be used to inherit parameter values from. Useful feature, to easily configure groups with overlapping configuration options.
as ( unset )as_argA 32-bit BGP autonomous system number. The value accepts AS-Plain or AS-Dot formats. Override the instance ASN and configure BGP confederation using the following format: confederation_as/as. For example, if your AS is 34 and your confederation AS is 43, set as=43/34.
nexthop-choice ( unset )enum (default | force-self | propagate)Affect outgoing NEXT_HOP attribute selection. Next-hops set in filters always take precedence and are not changed on route reflection except when set in a filter.

  • default - select the next-hop as described in RFC 4271
  • force-self - use the local address of the interface that connects to the peer as the next-hop
  • propagate - propagate received next-hop; if the route has a BGP NEXT_HOP attribute, use it as the next-hop; otherwise, fall back to the default case
multihop ( unset )boolEnable when the remote peer is more than one hop away.

This option affects outgoing next-hop selection as described in RFC 4271 (for eBGP only, excluding iBGP peers local to the confederation). It also affects:

  • Whether to accept connections from peers not in the same network (the remote address of the connection is used for this check)
  • Whether to accept incoming routes with a NEXT_HOP attribute not in the same network as the address used to establish the connection
  • The target scope of routes installed from this peer; routes from multi-hop or iBGP peers resolve their next-hops through IGP routes by default
hold-time ( unset )alt { enum (infinity) { infinity:0 } , time [3 .. 65535] }Specifies the BGP Hold Time value to be used when negotiating with peers.
According to the BGP specification, if the router does not receive successive KEEPALIVE and/or UPDATE and/or NOTIFICATION messages within the period specified in the Hold Time field of the OPEN message, then the BGP connection to the peer will be closed.

The minimal hold-time value of both peers will be used (note that the special value 0 or 'infinity' is lower than any other value)

* infinity - never expire the connection and never send keepalive messages.
keepalive-time ( unset )timeThe interval between keepalive messages, if not set then by default keepalive is 1/3 of the hold-time.
afi ( unset )ubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6, evpn)List of address families this peer can exchange routing information. The remote peer must support BGP capabilities optional parameter (they usually do) to negotiate any other address families than IP.
cisco-vpls-nlri-len-fmt ( unset )enum (auto-bits | auto-bytes | bits | bytes)VPLS NLRI length format type. Used for compatibility with Cisco VPLS. [[Read more>>]].
output.remove-private-as ( unset )boolIf set, then the BGP AS-PATH attribute is removed before sending out route updates if the attribute contains only private AS numbers.

The removal process happens before routing filters are applied and before the local, AS number is prepended to the AS path.
output.as-override ( unset )boolIf set, then all instances of the remote peer's AS number in the BGP AS-PATH attribute are replaced with the local AS number before sending a route update to that peer. Happens before routing filters and prepend.
use-bfd ( unset )boolWhether to use the BFD protocol for faster connection state detection.
save-to ( unset )stringFilename to save BGP protocol-specific packet content (Exported PDU) into pcap format. This method allows much simpler peer-specific packet capturing for debugging purposes.
output.add-path ( unset )ubit (ip, ipv6)Enable sending of additional paths for specified address families (BGP Addpath).
output.affinity ( unset )enum (main | alone | remote-as | instance | afi | vrf | input)Configure output multicore processing. Read more in Routing Protocol Multi-core Support article.
  • alone - input and output of each session is processed in its own process, the most likely best option when there are a lot of cores and a lot of peers
  • afi, instance, vrf, remote-as - try to run input/output of new session in process with similar parameters
  • main - run input/output in the main process (could potentially increase performance on single-core even possibly on multicore devices with small amount of cores)
  • input - run output in the same process as input (can be set only for output affinity)
output.redistribute ( unset )ubit (connected, static, rip, ospf, isis, bgp, vpn, dhcp, fantasy, modem, bgp-mpls-vpn, slaac)Enable redistribution of specified route types.
output.filter-select ( unset )enumName of the routing select chain to be used for prefix selection. If not specified, then default selection is used.
output.filter-chain ( unset )enumName of the routing filter chain to be used on the output prefixes. If the chain is not specified, then BGP by default accepts everything.
output.network ( unset )enumName of the address list used to send local networks. The network is sent only if a matching IGP route exists in the routing table and its ORIGIN attribute is set to IGP, other distribution methods have ORIGIN attribute set to INCOMPLETE.
output.network-blackhole ( unset )bool
output.default-originate ( unset )enum (never | if-installed | always)Specifies default route (0.0.0.0/0) distribution method. 'if-installed' option can be used to distribute default route only if corresponding IGP route present in the routing table.
output.default-prepend ( unset )numHow many times to prepend local ASN.
output.no-client-to-client-reflection ( unset )boolDisable client-to-client route reflection in Route Reflector setups.
output.no-early-cut ( unset )boolThe early cut is the mechanism, to guess (based on default RFC behavior) what would happen with the sent NPLRI when received by the remote peer. If the algorithm determines that the NLRI is going to be dropped, a peer will not even try to send it. However such behavior may not be desired in specific scenarios, then this option should be used to disable the early cut feature. Early cut works with eBGP sessions.
output.keep-sent-attributes ( unset )boolStore in memory sent prefix attributes, required for dump-saved-advertisements command to work. By default, sent-out prefixes are not stored to preserve the router's memory. An option should be enabled only for debugging purposes when necessary to see currently advertised prefixes.
input.add-path ( unset )ubit (ip, ipv6)Accept received additional paths (BGP Addpath) for specified address families.
input.attr-error-handlingenum (default | revised)
input.affinity ( unset )enum (main | alone | remote-as | instance | afi | vrf)

Configure input multi-core processing. Read more in Routing Protocol Multi-core Support article.

  • alone - input and output of each session are processed in its own process, most likely the best option when there are a lot of cores and a lot of peers
  • afi, instance, vrf, remote-as - try to run input/output of new session in process with similar parameters
  • main - run input/output in the main process (could potentially increase performance on single-core even possibly on multi-core devices with a small amount of cores)
  • input - run output in the same process as input (can be set only for output affinity)

input.filter ( unset )enumName of the routing filter chain to be used on input prefixes. This happens after NLRIs are processed. If the chain is not specified, then BGP by default accepts everything.
input.filter-nlri ( unset )enumName of the filter chain that will filter incoming IPv4/IPv6 NLRIs directly before they are  stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session restart.
input.allow-as ( unset )numIndicates how many times to allow your own AS number in AS-PATH, before discarding a prefix.
input.accept-nlri ( unset )enumName of the ipv4/6 address-list. A quick way to filter incoming updates with specific NLRIs. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session restart.
input.filter-communities ( unset )enumA quick way to filter incoming updates with specific communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-ext-communities ( unset )enumA quick way to filter incoming updates with specific extended communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-large-communities ( unset )enumA quick way to filter incoming updates with specific large communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-communities ( unset )enumA quick way to filter incoming updates with specific communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-ext-communities ( unset )enumA quick way to filter incoming updates with specific extended communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-large-communities ( unset )enumA quick way to filter incoming updates with specific large communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-unknown ( unset )enumA quick way to filter incoming updates with specific "unknown" attributes. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.limit-process-routes-ipv4 ( unset )enum (10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000)Try to limit the amount of received IPv4 routes to the specified number. This number does not represent the exact number of routes going to be installed in the routing table by the peer. BGP session "clear" command must be used to reset the flag if the limit is reached.
input.limit-process-routes-ipv6 ( unset )enum (10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000)Try to limit the amount of received IPv6 routes to the specified number. This number does not represent the exact number of routes going to be installed in the routing table by the peer. BGP session "clear" command must be used to reset the flag if the limit is reached.

routing/bgp/instance

Conditions: !smips
Type: Directory

FlagNameDescription
Xdisableddisabled
Iinactiveinactive
ArgumentTypeDescription
namestring
routing-table ( unset )enumName of the routing table, to install routes in.
vrf ( unset )enumName of the VRF BGP connections operates on. By default always use the "main" routing table.
router-id ( unset )alt { ipAddr , enum }

BGP Router ID to be used. Use the ID from the /routing/router-id configuration by specifying the reference name, or set the ID directly by specifying IP.

Equal router-ids are also used to group peers into one instance.

as ( unset )super { as_arg , [ /as_arg] }32-bit BGP autonomous system number. Enter the value in AS-Plain or AS-Dot formats. Configure BGP confederation using the following format: confederation_as/as. For example, if your AS is 34 and your confederation AS is 43, set as=43/34.
cluster-id ( unset )ipAddrFor route reflector instances, specify the cluster ID of the route reflector cluster. This attribute identifies routing updates from other route reflectors in the cluster to avoid routing information loops. Typically, only one route reflector exists per cluster; in this case, do not configure 'cluster-id' and BGP router ID is used instead.
ignore-as-path-len ( unset )boolIgnore the AS_PATH attribute in the BGP route selection algorithm. Applies to input.
multipath ( unset )numInstall the specified number of ECMP routes received by add-path or selected by best path selection.

routing/bgp/connection

Conditions: !smips
Type: Directory

A list of all connection-specific parameters can be seen in the table below.

In addition to connection-specific parameters, template-specific parameters are also directly exposed in this menu, for easier configuration in simple scenarios (when templates are not necessary).

FlagNameDescription
Ddynamicdynamic
Xdisableddisabled
Iinactiveinactive
ArgumentTypeDescription
name ( mandatory )string
instance ( mandatory )enum
remote.address ( unset )address (flags=46i/+:)Remote address used to connect and/or listen to.
remote.port ( unset )num
remote.as ( unset )super { as_arg , [ /as_arg] }Remote AS number. If not specified BGP will determine remote AS automatically from the OPEN message.
remote.ttlnumAcceptable minimum Time To Live, the hop limit for this TCP connection. For example, if 'ttl=255' then only single-hop neighbors will be able to establish the connection. This property only affects EBGP peers.
remote.allowed-as ( unset )enumName of the num-list containing remote AS numbers that will be allowed to connect. Useful for dynamic peer configuration.
local.address ( unset )address (flags=46i:)
local.port ( unset )num
local.ttlnumTime To Live (hop limit) that will be recorded in sent TCP packets.
local.role ( mandatory )enum (ibgp | ibgp-rr | ebgp | ebgp-provider | ebgp-rs | ebgp-rs-client | ebgp-customer | ebgp-peer)BGP role. In most scenarios, set to iBGP or eBGP. For more information on BGP roles, see the corresponding RFC 9234.
tcp-md5-key ( unset )stringKey used to authenticate the connection with TCP MD5 signature as described in RFC 2385. Leave empty to disable authentication.
connectboolWhether to allow the router to initiate the connection.
listenboolEnable listening for incoming connections. If remote.address is a host address and listening is enabled, close the listening socket after the first successful accept. If remote.address is a subnet and listening is enabled, the listening socket remains open after the first successful accept with a hard-coded limit of 256 open connections.
routing-table ( unset )enumName of the routing table, to install routes in. Overrides the instance parameter.
vrf ( unset )enumName of the VRF BGP connections operates on. By default uses the "main" routing table.
templates ( unset )multi_arg { enum }List of template names that will be used to inherit parameter values from. Useful feature, to easily configure groups with overlapping configuration options.
as ( unset )as_argA 32-bit BGP autonomous system number. The value accepts AS-Plain or AS-Dot formats. Override the instance ASN and configure BGP confederation using the following format: confederation_as/as. For example, if your AS is 34 and your confederation AS is 43, set as=43/34.
nexthop-choice ( unset )enum (default | force-self | propagate)Affect outgoing NEXT_HOP attribute selection. Next-hops set in filters always take precedence and are not changed on route reflection except when set in a filter.

  • default - select the next-hop as described in RFC 4271
  • force-self - use the local address of the interface that connects to the peer as the next-hop
  • propagate - propagate received next-hop; if the route has a BGP NEXT_HOP attribute, use it as the next-hop; otherwise, fall back to the default case
multihop ( unset )boolEnable when the remote peer is more than one hop away.

This option affects outgoing next-hop selection as described in RFC 4271 (for eBGP only, excluding iBGP peers local to the confederation). It also affects:

  • Whether to accept connections from peers not in the same network (the remote address of the connection is used for this check)
  • Whether to accept incoming routes with a NEXT_HOP attribute not in the same network as the address used to establish the connection
  • The target scope of routes installed from this peer; routes from multi-hop or iBGP peers resolve their next-hops through IGP routes by default
hold-time ( unset )alt { enum (infinity) { infinity:0 } , time [3 .. 65535] }Specifies the BGP Hold Time value to be used when negotiating with peers.
According to the BGP specification, if the router does not receive successive KEEPALIVE and/or UPDATE and/or NOTIFICATION messages within the period specified in the Hold Time field of the OPEN message, then the BGP connection to the peer will be closed.

The minimal hold-time value of both peers will be used (note that the special value 0 or 'infinity' is lower than any other value)

* infinity - never expire the connection and never send keepalive messages.
keepalive-time ( unset )timeThe interval between keepalive messages, if not set then by default keepalive is 1/3 of the hold-time.
afi ( unset )ubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6, evpn)List of address families this peer can exchange routing information. The remote peer must support BGP capabilities optional parameter (they usually do) to negotiate any other address families than IP.
cisco-vpls-nlri-len-fmt ( unset )enum (auto-bits | auto-bytes | bits | bytes)VPLS NLRI length format type. Used for compatibility with Cisco VPLS. [[Read more>>]].
output.remove-private-as ( unset )boolIf set, then the BGP AS-PATH attribute is removed before sending out route updates if the attribute contains only private AS numbers.

The removal process happens before routing filters are applied and before the local, AS number is prepended to the AS path.
output.as-override ( unset )boolIf set, then all instances of the remote peer's AS number in the BGP AS-PATH attribute are replaced with the local AS number before sending a route update to that peer. Happens before routing filters and prepend.
use-bfd ( unset )boolWhether to use the BFD protocol for faster connection state detection.
save-to ( unset )stringFilename to save BGP protocol-specific packet content (Exported PDU) into pcap format. This method allows much simpler peer-specific packet capturing for debugging purposes.
output.add-path ( unset )ubit (ip, ipv6)Enable sending of additional paths for specified address families (BGP Addpath).
output.affinity ( unset )enum (main | alone | remote-as | instance | afi | vrf | input)Configure output multicore processing. Read more in Routing Protocol Multi-core Support article.
  • alone - input and output of each session is processed in its own process, the most likely best option when there are a lot of cores and a lot of peers
  • afi, instance, vrf, remote-as - try to run input/output of new session in process with similar parameters
  • main - run input/output in the main process (could potentially increase performance on single-core even possibly on multicore devices with small amount of cores)
  • input - run output in the same process as input (can be set only for output affinity)
output.redistribute ( unset )ubit (connected, static, rip, ospf, isis, bgp, vpn, dhcp, fantasy, modem, bgp-mpls-vpn, slaac)Enable redistribution of specified route types.
output.filter-select ( unset )enumName of the routing select chain to be used for prefix selection. If not specified, then default selection is used.
output.filter-chain ( unset )enumName of the routing filter chain to be used on the output prefixes. If the chain is not specified, then BGP by default accepts everything.
output.network ( unset )enumName of the address list used to send local networks. The network is sent only if a matching IGP route exists in the routing table and its ORIGIN attribute is set to IGP, other distribution methods have ORIGIN attribute set to INCOMPLETE.
output.network-blackhole ( unset )bool
output.default-originate ( unset )enum (never | if-installed | always)Specifies default route (0.0.0.0/0) distribution method. 'if-installed' option can be used to distribute default route only if corresponding IGP route present in the routing table.
output.default-prepend ( unset )numHow many times to prepend local ASN.
output.no-client-to-client-reflection ( unset )boolDisable client-to-client route reflection in Route Reflector setups.
output.no-early-cut ( unset )boolThe early cut is the mechanism, to guess (based on default RFC behavior) what would happen with the sent NPLRI when received by the remote peer. If the algorithm determines that the NLRI is going to be dropped, a peer will not even try to send it. However such behavior may not be desired in specific scenarios, then this option should be used to disable the early cut feature. Early cut works with eBGP sessions.
output.keep-sent-attributes ( unset )boolStore in memory sent prefix attributes, required for dump-saved-advertisements command to work. By default, sent-out prefixes are not stored to preserve the router's memory. An option should be enabled only for debugging purposes when necessary to see currently advertised prefixes.
input.add-path ( unset )ubit (ip, ipv6)Accept received additional paths (BGP Addpath) for specified address families.
input.attr-error-handlingenum (default | revised)
input.affinity ( unset )enum (main | alone | remote-as | instance | afi | vrf)

Configure input multi-core processing. Read more in Routing Protocol Multi-core Support article.

  • alone - input and output of each session are processed in its own process, most likely the best option when there are a lot of cores and a lot of peers
  • afi, instance, vrf, remote-as - try to run input/output of new session in process with similar parameters
  • main - run input/output in the main process (could potentially increase performance on single-core even possibly on multi-core devices with a small amount of cores)
  • input - run output in the same process as input (can be set only for output affinity)

input.filter ( unset )enumName of the routing filter chain to be used on input prefixes. This happens after NLRIs are processed. If the chain is not specified, then BGP by default accepts everything.
input.filter-nlri ( unset )enumName of the filter chain that will filter incoming IPv4/IPv6 NLRIs directly before they are  stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session restart.
input.allow-as ( unset )numIndicates how many times to allow your own AS number in AS-PATH, before discarding a prefix.
input.accept-nlri ( unset )enumName of the ipv4/6 address-list. A quick way to filter incoming updates with specific NLRIs. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session restart.
input.filter-communities ( unset )enumA quick way to filter incoming updates with specific communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-ext-communities ( unset )enumA quick way to filter incoming updates with specific extended communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-large-communities ( unset )enumA quick way to filter incoming updates with specific large communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-communities ( unset )enumA quick way to filter incoming updates with specific communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-ext-communities ( unset )enumA quick way to filter incoming updates with specific extended communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.accept-large-communities ( unset )enumA quick way to filter incoming updates with specific large communities. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.filter-unknown ( unset )enumA quick way to filter incoming updates with specific "unknown" attributes. It allows filtering incoming messages directly before they are even parsed and stored in memory, that way significantly reducing memory usage. Regular input filter chain can only reject prefixes which means that it will still eat memory and will be visible in /routing route table as "not active, filtered". Changes to be applied required session refresh.
input.limit-process-routes-ipv4 ( unset )enum (10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000)Try to limit the amount of received IPv4 routes to the specified number. This number does not represent the exact number of routes going to be installed in the routing table by the peer. BGP session "clear" command must be used to reset the flag if the limit is reached.
input.limit-process-routes-ipv6 ( unset )enum (10 | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000)Try to limit the amount of received IPv6 routes to the specified number. This number does not represent the exact number of routes going to be installed in the routing table by the peer. BGP session "clear" command must be used to reset the flag if the limit is reached.
Read-only ArgumentTypeDescription
local.default-addressaddress (flags=46i:)

routing/bgp/advertisements

Conditions: !smips
Type: Directory

Read-only ArgumentTypeDescription
peerenum
dstaddress (flags=46/R)
afienum (ip | ipv6 | l2vpn | l2vpn-cisco | vpnv4 | vpnv6)
local-prefnum
mednum
nexthopmulti_arg { address (flags=46) }
nlrimulti_arg { address (flags=46i/SR) }
withdrawnmulti_arg { address (flags=46i/SR) }
originnum
as-pathmulti_arg { string }
as4-pathmulti_arg { string }
communitiesmulti_arg { string }
ext-communitiesmulti_arg { string }
large-communitiesmulti_arg { string }
atomic-aggregatebool
aggregatorstring
as4-aggregatorstring
originator-idipAddr
cluster-listmulti_arg { ipAddr }
igp-metricnum
otcnum

routing/bgp/session

Conditions: !smips
Type: Directory

List of BGP already established, not yet connected or disconnected sessions.

FlagNameDescription
Eestablishedestablished
Read-only ArgumentTypeDescription
namestring
instanceenum
remote.addressaddress (flags=46iv+:)
remote.portnum
remote.assuper { as_arg , [ /as_arg] }
remote.idipAddr
remote.refused-cap-optbool
remote.capabilitiesubit (mp, rr, orf, enhe, em, sec, ml, role, gr, as4, dyn, ms, ap, err, llgr, fqdn)Remote peer's advertised/supported capabilities.
remote.afiubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6, evpn)Remote peer's advertised/supported address families.
remote.hold-timealt { enum (infinity) { infinity:0 } , time [3 .. 65535] }
remote.messagesnumNumber of BGP messages received from remote peer.
remote.bytesnumTotal number of bytes received from remote peer.
remote.gr-restartbool
remote.gr-timenum
remote.gr-afiubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6)
remote.gr-afi-fwpubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6)
remote.eorubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6, evpn)List of address families that received end-of-rib from remote peer.
remote.roleenum (provider | route-server | route-server-client | customer | peer)
local.roleenum (ibgp | ibgp-rr | ebgp | ebgp-provider | ebgp-rs | ebgp-rs-client | ebgp-customer | ebgp-peer)
local.addressaddress (flags=46iv:)
local.portnum
local.assuper { as_arg , [ /as_arg] }
local.idipAddr
local.cluster-idipAddr
local.capabilitiesubit (mp, rr, enhe, role, gr, as4, ap)
local.afiubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4, vpnv6, evpn)
local.messagesnum
local.bytesnum
local.eorubit (ip, ipv6, l2vpn, l2vpn-cisco, vpnv4)
output.affinityenum (main | alone | remote-as | instance | afi | vrf | input)
output.procidnum
output.filter-selectenum
output.filter-chainenum
output.networkenum
output.add-pathubit (ip, ipv6)
output.remove-private-asbool
output.default-originateenum (never | if-installed | always)
output.default-prependnum
output.no-client-to-client-reflectionbool
output.no-early-cutbool
output.keep-sent-attributesbool
output.last-notificationstringContent of last sent notification message.
input.affinityenum (main | alone | remote-as | instance | afi | vrf)
input.procidnumShows which routing process the session is tied to.
input.filterenum
input.allow-asnum
input.as-overridebool
input.ignore-as-path-lenbool
input.limit-process-routesnum
input.add-pathubit (ip, ipv6)
input.last-notificationstringContent of last received notificatin message.
vrfenum
ibgpswitchIndicates if the session is iBGP.
ebgpswitchIndicates if the session is eBGP.
limit-exceededswitchIndicates if received prefix count exceeds configured prefix limit by input.limit-process-routes-ipv4 and/or input.limit-process-routes-ipv6.
stoppedswitchIndicates whether session is administratively stopped.
routing-tableenum
nexthop-choiceenum (default | force-self | propagate)
cisco-vpls-nlri-len-fmtenum (auto-bits | auto-bytes | bits | bytes)
multihopbool
hold-timealt { enum (infinity) { infinity:0 } , time [3 .. 65535] }
keepalive-timetime
use-bfdbool
uptimetimeUptime of established session.
last-starteddate_arg
last-stoppeddate_arg
save-tostring
prefix-countnum
keepalive-timertime
restart-timertime

routing/bgp/session/resend

Conditions: !smips
Type: Command

Resend prefixes to a specified BGP session. The command takes two arguments:

ArgumentTypeDescription
afienum (ip | ipv6 | l2vpn | vpnv4)Specifies for which address families to resend prefixes.
save-tostringThe name of the pcap file where to dump resent messages, can be used for debugging purposes.

routing/bgp/session/refresh

Conditions: !smips
Type: Command

Send route refresh to a specified BGP session. Is used to trigger re-sending all the routes from the remote peer.

ArgumentTypeDescription
afienum (ip | ipv6 | l2vpn | vpnv4)Specifies for which address family to send route refresh.

routing/bgp/session/stop

Conditions: !smips
Type: Command

routing/bgp/session/dump-saved-advertisements

Conditions: !smips
Type: Command

Dump saved advertisements from specified BGP session in the *.pcap file.

ArgumentTypeDescription
save-tostringThe filename where to store the PCAP data.

routing/bgp/session/clear

Conditions: !smips
Type: Command

Clear the session flags. For example, to be able to re-establish a session after the prefix limit is reached "limit-exceeded" flag must be cleared. It can be done by specifying flag parameter, which is able to take the following values:

  • input-last-notification  
  • limit-exceeded  
  • output-last-notification  
  • refused-cap-opt  
  • stopped
ArgumentTypeDescription
flagenum (refused-cap-opt | stopped | limit-exceeded | input-last-notification | output-last-notification)A flag to be cleared from BGP session.

routing/bgp/vpn

Conditions: !smips
Type: Directory

L3VPN VPNv4/VPNv6 instance configuration

FlagNameDescription
Xdisableddisabled
Iinactiveinactive
ArgumentTypeDescription
name ( unset )string
instance ( mandatory )enumName of the instance this VPN is assigned to.
route-distinguisher ( mandatory )stringSpecifies the value that gets attached to route so that receiving routers can distinguish advertisements that may otherwise look the same. Used to distinguish between tenants using overlapping IP ranges. Also can be used to simplify convergence and redundancy within Virtual Network. RDs form MLAG pairs should be unique, too.
vrf ( mandatory )enumName of the VRF table that this VPN instance will use.
label-allocation-policy ( mandatory )enum (per-vrf | per-prefix)
import.route-targets ( unset )obj_arg { address (flags=R) }List of route targets that will be used to import VPNv4 routes. The accepted RT format is similar to the one for Route Distinguishers.
export.route-targets ( unset )obj_arg { address (flags=R) }List of route targets added when exporting VPNv4 routes. The accepted RT format is similar to the one for Route Distinguishers.
import.filter-chain ( unset )enum
export.filter-select ( unset )enumThe name of the routing/filter/select-chain that is used to select prefixes to be exported exporting.
export.filter-chain ( unset )enumThe name of the routing/filter/chain that is used to filter prefixes before exporting.
export.redistribute ( unset )ubit (connected, static, rip, ospf, isis, bgp, vpn, dhcp, fantasy, modem, slaac)Enable redistribution of specified route types from a VRF to VPNv4.

routing/bgp/evpn

Conditions: !smips
Type: Directory

See EVPN documentation.

FlagNameDescription
Xdisableddisabled
ArgumentTypeDescription
name ( unset )string
instance ( mandatory )enumBGP instance this EVPN is assigned to.
vrf ( unset )enumName of the VRF table that this EVPN instance will use.
rd ( unset )address (flags=R)Specifies the value that gets attached to route so that receiving routers can distinguish advertisements that may otherwise look the same. Used to distinguish between tenants using overlapping IP ranges. Also can be used to simplify convergence and redundancy within Virtual Network. RDs form MLAG pairs should be unique, too.
vni ( unset )obj_arg { range_arg }Range of Virtual Network Identifiers.
import.route-targets ( unset )obj_arg { address (flags=R) }List of route targets that will be used to import EVPN routes.
export.route-targets ( unset )obj_arg { address (flags=R) }List of route targets that will be added to EVPN routes when exporting.

routing/bgp/vpls

Conditions: !smips
Type: Directory

This menu lists all the configured BGP-based VPLS instances. These instances allow the router to advertise VPLS BGP NLRI and indicate that the router belongs to a specific customer VPLS network.

MP-BGP-based autodiscovery and signaling (RFC 4761).

Cisco VPLS BGP-based auto-discovery (draft-ietf-l2vpn-signaling-08).

Support for multiple import/export route target extended communities for BGP-based VPLS (both, RFC 4761 and draft-ietf-l2vpn-signaling-08).

FlagNameDescription
Xdisableddisabled
Iinactiveinactive

TODO: pw-args graft is not imported

ArgumentTypeDescription
name ( unset )string
vrf ( unset )enum
rd ( unset )address (flags=R)Specifies the value that gets attached to VPLS NLRI so that receiving routers can distinguish advertisements that may otherwise look the same. This implies that a unique route-distinguisher for every VPLS must be used. It is not necessary to use the same route distinguisher for some VPLS on all routers forming that VPLS as distinguisher is not used for determining if some BGP NLRI is related to a particular VPLS (Route Target attribute is used for this), but it is mandatory to have different distinguishers for different VPLSes. Accepts 3 types of formats. Read more>>
site-id ( unset )numUnique site identifier. Each site must have a unique site-id. A parameter must be set for RFC 4761 style VPLS signaling.
cisco-id ( unset )addressUnique identifier. A parameter must be set for cisco-style VPLS signaling. In most cases this should not be used, any modern software supports RFC 4761 style signaling (see site-id parameter). Parameter is a merge of l2-router-id and RD, for example: 10.155.155.1&6550:123
import-route-targets ( unset )multi_arg { array-id, address (flags=R) }The setting is used to determine if BGP NLRI is related to a particular VPLS, by comparing route targets received from BGP NLRI.
export-route-targets ( unset )multi_arg { array-id, address (flags=R) }he setting is used to tag BGP NLRI with one or more route targets which on the remote side is used by import-route-targets.
local-pref ( unset )num
interface-list ( unset )enum
pw-type ( unset )enum (tagged-ethernet | raw-ethernet | vpls)Pseudowire type. If not set then by default raw-ethernet i sused.
pw-l2mtu ( unset )numL2MTU value advertised to a remote peer.
pw-control-word ( unset )enum (default | enabled | disabled)
bridge ( unset )interface_enum
bridge-cost ( unset )numCost of the bridge port.
bridge-horizon ( unset )numIf set to none, bridge horizon will not be used.
bridge-pvid ( unset )numUsed to assign port VLAN ID (pvid) for a dynamically bridged interface. This property only has an effect when bridge vlan-filtering is set to yes.
Read-only ArgumentTypeDescription
current-peersstring